package vip.zcn.mrn.service.impl;

import org.springframework.stereotype.Service;
import vip.zcn.mrn.model.User;
import vip.zcn.mrn.service.LoginService;
import vip.zcn.mrn.util.PasswordUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * 登录服务实现类
 * @author 张灿能
 */
@Service
public class LoginServiceImpl implements LoginService {
    /**
     * 模拟用户数据存储Map，实际项目中应使用数据库存储
     */
    private static final Map<String, User> users = new HashMap<>();
    
    /**
     * 初始化默认用户数据
     * 用户名: admin
     * 密码: 123456 (已加密存储)
     * 手机号: 13800000000
     */
    static {
        User u = new User();
        u.setUsername("admin");
        u.setPasswordHash(PasswordUtil.encode("123456"));
        u.setPhone("13800000000");
        users.put(u.getUsername(), u);
    }

    /**
     * 通过用户名登录验证
     * @param username 用户名
     * @param password 密码（明文）
     * @return 验证成功返回true，否则返回false
     * @author 张灿能
     */
    @Override
    public boolean loginByUsername(String username, String password) {
        User user = users.get(username);
        return user != null && PasswordUtil.matches(password, user.getPasswordHash());
    }

    /**
     * 通过手机号登录验证
     * @param phone 手机号
     * @param password 密码（明文）
     * @return 验证成功返回true，否则返回false
     * @author 张灿能
     */
    @Override
    public boolean loginByPhone(String phone, String password) {
        return users.values().stream()
                .anyMatch(u -> u.getPhone().equals(phone) && PasswordUtil.matches(password, u.getPasswordHash()));
    }
}